package cn.liangxxhu.rocketmq.core.strategy;

import org.apache.rocketmq.client.producer.SendResult;
import org.springframework.messaging.Message;

/**
 * 消息发送策略模式
 */
public interface MessageSendStrategy {

    /**
     * 发送消息
     * @param destination 目的地(topic:tag)
     * @param message 消息对象
     * @param timeout 超时时间
     * @param delayTime 延迟时间(秒)，非延迟消息可传0
     * @return 发送结果
     */
    SendResult send(String destination, Message<?> message, long timeout, long delayTime);

    /**
     * 消息类型
     * @return 消息类型
     */
    String getMessageType();
}
